The invention relates generally to an architecture for operating a computer. More specifically, the invention relates to a method, an apparatus, and an article of manufacture for operating a computer, with applicability to a natural language search engine for electronic databases, a natural programming language, and a parser-free computer operating system.
Conventionally, computers are operated by inputting a request and having a parser parse the request to determine what is desired of the computer. The request is in an appropriate computer language, and the parser translates the request from the computer language to executable binary code using a set of parsing rules.
Computers are also conventionally operated by inputting information to the computer. For example, information can be conveyed by selecting an item from a menu, point-and-clicking on a button or an icon using a mouse, or entering text from a prompting question. When information is entered into a computer, the computer uses an external parser for understanding the input. For the above examples of conveying information to the computer, the parser is created using one or more computer programs using one or more appropriate computer languages.
One conventional approach to computer programming is object oriented computer programming. In object oriented programming, information within the computer is represented using an "object." An object is a data structure that specifies an internal representation for the computer and properties thereof. To manipulate the objects, a parser parses a set of object oriented program instructions and adds, deletes, or changes objects according to the parsed object oriented program instructions.
By using such conventional approaches to operating a computer, several drawbacks arise. For instance, to instruct a computer to perform certain actions, one needs to be familiar with a computer programming language, which includes an in-depth knowledge of the external rules used to communicate with the computer in this language. Learning how to program a computer and learning how to formulate instructions in a computer language based on the language's external rules are complex tasks.
Moreover, with this conventional approach, an external parser is required to parse instructions in the computer programming language. Hence, before the computer can take any action, the instructions in the computer programming language must be translated into executable code for the computer. This requires both a parser and steps required to use the parser.
As a further disadvantage with this conventional approach, computer programming languages are conventionally not in a natural language, such as English, German, or French. Instead, conventional programming languages are a species unto themselves and are not useful for communicating between humans, but only between human and computer. Hence, to learn to communicate with a computer, one needs to learn a computer programming language.
In addition, to use conventional computer program languages, a user needs to adapt to the computer, and the computer does not dynamically change to understand the user. This is caused by the conventional approach of how a computer understands a request from a user.